package org.pb.user.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.pb.basic.utils.AjaxResult;
import org.pb.user.dto.LoginDto;
import org.pb.user.service.ILoginInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * 登陆的接口
 * @author pb
 */
@RestController
@RequestMapping("/login")
@Api(tags = "登陆接口")
public class LoginController {

    @Autowired
    private ILoginInfoService loginInfoService;

    /**
     * 管理员登陆的功能接口
     * @param loginDto 接收登陆信息的数据传输对象
     * @return 返回数据传输结果
     */
    @PostMapping("/account")
    public AjaxResult employeeLogin(@RequestBody LoginDto loginDto) {
        try {
            // 直接返回登陆验证后的处理结果
            return loginInfoService.loginRetype(loginDto);
        } catch (Exception e) {
            e.printStackTrace();
            // 如果出现了异常，则表示登陆失败
            return AjaxResult.failedWithMessage(e.getMessage());
        }
    }

    /**
     * 微信扫码登陆接口
     * @param map 接受参数的map集合
     * @return 返回登陆处理结果
     */
    @PostMapping("/wechat")
    @ApiOperation(value = "微信的登陆接口", notes = "输入对应的授权码code，如果code，根据code获取到对应的openid")
    public AjaxResult wechatLogin(@RequestBody Map<String, String> map) {
        try {
            // 执行微信登录操作，如果没有出现异常，则直接抛出得到的结果
            return loginInfoService.wechatLogin(map);
        } catch (Exception e) {
            e.printStackTrace();
            // 如果出现异常表示登陆失败，返回异常信息
            return AjaxResult.failedWithMessage(e.getMessage());
        }
    }

}
